Add option name.
authoroliskoli <oliskoli>
Thu, 8 Jun 2006 04:43:41 +0000 (04:43 +0000)
committeroliskoli <oliskoli>
Thu, 8 Jun 2006 04:43:41 +0000 (04:43 +0000)
trackfilter.c

index 00c7748ae87e892bc1bee718cf5957f4dac30f92..84ba3da4176e6a606dafa432370c7b26426da5b3 100644 (file)
@@ -29,6 +29,7 @@
     2005-10-04: Add filterdefs to hold protos for filter functions... (RJL)
     2005-10-04: Fix range-check max. value; exit filter, if no more tracks left
     2006-04-06: Add fix, course, and speed options
+    2006-06-01: Add name option
  */
  
 #include <ctype.h>
@@ -44,6 +45,7 @@
 #define TRACKFILTER_SPLIT_OPTION       "split"
 #define TRACKFILTER_TITLE_OPTION       "title"
 #define TRACKFILTER_MERGE_OPTION       "merge"
+#define TRACKFILTER_NAME_OPTION                "name"
 #define TRACKFILTER_STOP_OPTION                "stop"
 #define TRACKFILTER_START_OPTION       "start"
 #define TRACKFILTER_MOVE_OPTION                "move"
@@ -63,6 +65,7 @@ static char *opt_stop = NULL;
 static char *opt_fix = NULL;
 static char *opt_course = NULL;
 static char *opt_speed = NULL;
+static char *opt_name = NULL;
 
 static
 arglist_t trackfilter_args[] = {
@@ -77,6 +80,9 @@ arglist_t trackfilter_args[] = {
        {TRACKFILTER_MERGE_OPTION, &opt_merge, 
            "Merge multiple tracks for the same way", NULL, ARGTYPE_STRING, 
            ARG_NOMINMAX},
+       {TRACKFILTER_NAME_OPTION, &opt_name, 
+           "Use only track(s) where title matches given name", NULL, ARGTYPE_STRING, 
+           ARG_NOMINMAX},
        {TRACKFILTER_START_OPTION, &opt_start, 
            "Use only track points after this timestamp", NULL, ARGTYPE_INT, 
            ARG_NOMINMAX},
@@ -219,6 +225,16 @@ trackfilter_fill_track_list_cb(const route_head *track)    /* callback for track_d
            return;
        }
        
+       if (opt_name != NULL)
+       {
+               if ((track->rte_name == NULL) ||
+                   (case_ignore_str_match(track->rte_name, opt_name) == 0))
+               {
+                       track_del_head((route_head *)track);
+                       return;
+               }
+       }
+       
        track_list[track_ct].track = (route_head *)track;
        
        i = 0;
@@ -791,6 +807,11 @@ trackfilter_process(void)
        opts = trackfilter_opt_count();
        if (opts == 0) opts = -1;               /* flag for do "pack" by default */
        
+       if (opt_name != NULL)
+       {
+           if (--opts == 0) return;
+       }
+       
        if (opt_move != NULL)                   /* Correct timestamps before any other op */
        {
            trackfilter_move();